const Controller = require('egg').Controller;


class recharge extends Controller {
    /**
     * 菜单跳转
     * @returns {Promise<void>}
     */
    async to(){
        const {app,ctx,service} = this;
        await ctx.render('/admin/recharge.ejs',{});
    }

    /**
     * 新增接口
     * /admin/接口/new
     * type post
     * @returns {Promise<void>}
     */
    async create(){
        const {app,ctx,service} = this;
        //获取post请求参数
        let param = ctx.request.body.data;

        //创建验证规则
        const rule = {
            username:'required',
            money:'required',//仅支持字母
            password:'required',
        };
        //验证 验证成功 err为undefined 失败则为错误信息
        const err = await app.validator.validate(param,rule);
        //判断err是否为空
        if(!app.lodash.isEmpty(err)){
            //非空说明 验证失败,抛出401错误,即缺失参数或参数不合规范
            ctx.throw(401,err[0].field+' -- '+err[0].message);
        }

        let user_info = await ctx.session.user_info;

        if(!(await service.utils.md5(param.password) === user_info.password)){
            ctx.throw(401,'管理员密码错误！');
        }

        let user = await ctx.model.FdUser.findOne({
            where:{
                username:param.username,
                type:'3'
            }
        });

        if(app.lodash.isEmpty(user)){
            ctx.throw(401,'充值账号不存在！');
        }

        //调用service获取结果
        let rs = await service.rechargeService.create(param);

        //判断新增是否成功
        //此处只会捕捉到因为记录已存在而添加失败的错误 其他错误此处无法捕捉,由最外层的错误捕捉来处理
        if(!rs){
            //失败 只有一个原因,既是记录已存在
            ctx.throw(501,'该记录已存在');
        }

        //返回
        ctx.body = {
            code : 200,
            data : {},
            msg : ''
        }
    }

}

module.exports = recharge;
